java泛型以防止父类成为可接受类型
在这种情况下,我必须创建一个泛型方法,该方法可以接受子对象列表,但不能接受父类对象
说我有
class ClassA {}
它的扩展范围是
class ClassB extends ClassA {}
class ClassC extends ClassA {}
executeMethod(List</* either ClassB or ClassC but not ClassA */>)
我们能用泛型实现它吗
你可以在下面搜索框中键入要查询的问题!
在这种情况下,我必须创建一个泛型方法,该方法可以接受子对象列表,但不能接受父类对象
说我有
class ClassA {}
它的扩展范围是
class ClassB extends ClassA {}
class ClassC extends ClassA {}
executeMethod(List</* either ClassB or ClassC but not ClassA */>)
我们能用泛型实现它吗
# 1 楼答案
做摘要是最简单的方法。如果您不能生成抽象,您可以创建一个抽象类,该类扩展了A,然后自身由B和C扩展,例如:
# 2 楼答案
这是无法做到的,因为Pshemo说没有
or
或not
操作。但是,您可以这样做:这样就有了两个同名的方法,一个只接受带有}和{}是不同的,所以这两种方法不会冲突。
而且
ClassB
对象的列表,另一个只接受带有ClassC
对象的列表。因为{sharedMethodPerhaps
是私有的,所以您可以控制它是什么代码类以及如何使用我希望这有帮助:)
# 3 楼答案
我不知道为什么你不能只允许
List<? extends ClassA>
,但你可以试试:或